It is often useful to have an accurate estimation of the bandwidth of a connection between two devices that exchange data through a network (e.g., Internet). For instance, for two peers of a video/audio conferencing session, an accurate estimation of the bandwidth is essential in order to provide a high-quality user experience. If the video and audio streams generate a bitrate higher than the available bandwidth, the conference suffers from visual and audio artifacts due to packet loss. On the other hand, if the generated bitrate does not adapt itself when higher bandwidth becomes available, the video and audio quality will not be as good as they could.
The existing bandwidth estimation techniques use one or combinations of various metrics, such as packet inter-arrival time, round-trip-time (“RTT”), or packet loss rate per media stream. A common technique is based on sending a number of back-to-back packets (“packet sequence”) on one side of the connection and deriving an estimation from the inter-arrival time of the received packets on the other side. However, the estimations derived by using this common technique sometimes suffer inaccuracies due to unpredictable system overhead and network buffering.